/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.Carol.client;

/**
 *
 * @author ��
 */

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.TextBox;
   
  /** Di�logo que bloquea la p�gina que lo contiene y la libera al cerrarse. La clase
   * <code>DialogBox</code> es una subclase de <code>PopupPanel</code>.<br>
   * Las instancias de <code>DialogBox</code> tienen una barra de t�tulo que permite
   * arrastrarlos.*/
  public class Ingreso extends DialogBox implements ClickHandler {
    private final TextBox txtAutor = new TextBox();
    private final TextBox txtEdicion = new TextBox();
    private final TextBox txtNombre = new TextBox();
    private final TextBox txtYear = new TextBox();
    private final TextBox txtPrecio = new TextBox();
    private final TextBox txtCurso = new TextBox();
    private final TextBox txtProfesor = new TextBox();
    private final TextBox txtEstado = new TextBox();
 
   // NuevoAsync sp = (NuevoAsync)GWT.create(NuevoAsync.class);
   // DtoConocido objeto = new DtoConocido();    
    private final Button btnGuardar = new Button("Guardar",this);
    
    public Ingreso() {
      /* El primer par�metro en false indica que el di�logo no es autohide. El segundo
       * par�metro es true para indicar que es modal, o sea que bloquea el resto de la
       * p�gina si no se cierra. */
      super(false, true);
      // Oscurece el fondo al abrirse.
      setGlassEnabled(true);
      // Asigna el texto de la barra de t�tulo.
      setText("    Ingrese los datos del libro");
      // Realiza una animaci�n al abrir o cerrar el di�logo.
      setAnimationEnabled(true);
      final FlexTable contenido = new FlexTable();
      contenido.setCellSpacing(12);
      contenido.setCellPadding(0);
      
      contenido.setText(0, 0, "Autor:");
      contenido.setWidget(0, 1, txtAutor);
      contenido.setText(1, 0, "Edicion:");
      contenido.setWidget(1, 1, txtEdicion);
      contenido.setText(2, 0, "Nombre del Libro:");
      contenido.setWidget(2, 1, txtNombre);
      contenido.setText(3, 0, "Año:");
      contenido.setWidget(3, 1, txtYear);
      contenido.setText(4, 0, "Precio:");
      contenido.setWidget(4, 1, txtPrecio);
      contenido.setText(5, 0, "Curso:");
      contenido.setWidget(5, 1, txtCurso);
      contenido.setText(6, 0, "Profesor:");
      contenido.setWidget(6, 1, txtProfesor);
      contenido.setText(7, 0, "Estado:");
      contenido.setWidget(7, 1, txtEstado);
      
      contenido.setWidget(8, 1, btnGuardar);
     
      // Asigna el contenido.
      setWidget(contenido);
    }

    @Override
    public void onClick(ClickEvent event) {
        
     NuevoAsync sp = GWT.create(Nuevo.class);
     final String nombre = txtNombre.getText().trim();
     final String autor = txtAutor.getText().trim();
     
     sp.metodo(nombre, autor, new AsyncCallback<String>() {
        /** Método que se llama de regreso cuando hay un error.
         * @param t Descripción del error generado. */
       
            @Override
        public void onFailure(final Throwable t) {
         Window.alert(t.getLocalizedMessage());
         // lblEstado.setText("Fallo: " + t.getLocalizedMessage());
        }
        /** Método que se llama de regreso cuando se recibe con éxito la respuesta
         * solicitada. */
        @Override
        public void onSuccess(final String resultado) {
          Window.alert(resultado);
        // lblEstado.setText("Éxito: " + resultado);
       }
      });
     continuacion();
      //  throw new UnsupportedOperationException("Not supported yet.");
    }
    
    private void continuacion() {
       txtEstado.setText("Datos enviados.");    
     }
 }